/**
**************************************************************************************
*Palisma - Secrets of the Illuminati is an open-source 2D RPG                        *
*Copyright (C) 2006, Tony Sparks                                                     *
*                                                                                    *
*This library is free software; you can redistribute it and/or                       *
*modify it under the terms of the GNU Lesser General Public                          *
*License as published by the Free Software Foundation; either                        *
*version 2.1 of the License, or (at your option) any later version.                  *
*                                                                                    *
*This library is distributed in the hope that it will be useful,                     *
*but WITHOUT ANY WARRANTY; without even the implied warranty of                      *
*MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU                   *
*Lesser General Public License for more details.                                     *
*                                                                                    *
*You should have received a copy of the GNU Lesser General Public                    *
*License along with this library; if not, write to the Free Software                 *
*Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA      *
**************************************************************************************
*/
#pragma once
#include <string>
#include "Commands.h"


/**
=====================
Save .CFG command
=====================
*/
class ClientConfig;
class SaveCFG_f : public ICommand
{
public:
    SaveCFG_f() { m_config = NULL; };
    void Exec( std::string &s );
    void Set( ClientConfig* c ) { m_config = c; };

private:
    ClientConfig*   m_config;
};



/**
=====================
Creates player actions and has the ability
to save them
=====================
*/
class Binder;
class Cvars;
class ClientConfig
{
public:
    ClientConfig(Cvars* cvar, Binder* binds );

    /** Register the players key binds */
    void Register(  const std::string &cmd, int key );

    /** Save the config to memory */
    int Save(const std::string &fileName, const std::string &Header  );
private:
    SaveCFG_f       save_f;             // save console cmd
    Cvars*          m_Cvars;            // cvars to latch too
    Binder*         m_Binds;         
public:
    virtual ~ClientConfig(void);
};
